home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / imghdr.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  4KB  |  169 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''Recognize image file formats based on their first few bytes.'''
  5. __all__ = [
  6.     'what']
  7.  
  8. def what(file, h = None):
  9.     if h is None:
  10.         if type(file) == type(''):
  11.             f = open(file, 'rb')
  12.             h = f.read(32)
  13.         else:
  14.             location = file.tell()
  15.             h = file.read(32)
  16.             file.seek(location)
  17.             f = None
  18.     else:
  19.         f = None
  20.     
  21.     try:
  22.         for tf in tests:
  23.             res = tf(h, f)
  24.             if res:
  25.                 return res
  26.                 continue
  27.     finally:
  28.         if f:
  29.             f.close()
  30.         
  31.  
  32.  
  33. tests = []
  34.  
  35. def test_rgb(h, f):
  36.     '''SGI image library'''
  37.     if h[:2] == '\x01\xda':
  38.         return 'rgb'
  39.     
  40.  
  41. tests.append(test_rgb)
  42.  
  43. def test_gif(h, f):
  44.     """GIF ('87 and '89 variants)"""
  45.     if h[:6] in ('GIF87a', 'GIF89a'):
  46.         return 'gif'
  47.     
  48.  
  49. tests.append(test_gif)
  50.  
  51. def test_pbm(h, f):
  52.     '''PBM (portable bitmap)'''
  53.     if len(h) >= 3 and h[0] == 'P' and h[1] in '14' and h[2] in ' \t\n\r':
  54.         return 'pbm'
  55.     
  56.  
  57. tests.append(test_pbm)
  58.  
  59. def test_pgm(h, f):
  60.     '''PGM (portable graymap)'''
  61.     if len(h) >= 3 and h[0] == 'P' and h[1] in '25' and h[2] in ' \t\n\r':
  62.         return 'pgm'
  63.     
  64.  
  65. tests.append(test_pgm)
  66.  
  67. def test_ppm(h, f):
  68.     '''PPM (portable pixmap)'''
  69.     if len(h) >= 3 and h[0] == 'P' and h[1] in '36' and h[2] in ' \t\n\r':
  70.         return 'ppm'
  71.     
  72.  
  73. tests.append(test_ppm)
  74.  
  75. def test_tiff(h, f):
  76.     '''TIFF (can be in Motorola or Intel byte order)'''
  77.     if h[:2] in ('MM', 'II'):
  78.         return 'tiff'
  79.     
  80.  
  81. tests.append(test_tiff)
  82.  
  83. def test_rast(h, f):
  84.     '''Sun raster file'''
  85.     if h[:4] == 'Y\xa6j\x95':
  86.         return 'rast'
  87.     
  88.  
  89. tests.append(test_rast)
  90.  
  91. def test_xbm(h, f):
  92.     '''X bitmap (X10 or X11)'''
  93.     s = '#define '
  94.     if h[:len(s)] == s:
  95.         return 'xbm'
  96.     
  97.  
  98. tests.append(test_xbm)
  99.  
  100. def test_jpeg(h, f):
  101.     '''JPEG data in JFIF format'''
  102.     if h[6:10] == 'JFIF':
  103.         return 'jpeg'
  104.     
  105.  
  106. tests.append(test_jpeg)
  107.  
  108. def test_bmp(h, f):
  109.     if h[:2] == 'BM':
  110.         return 'bmp'
  111.     
  112.  
  113. tests.append(test_bmp)
  114.  
  115. def test_png(h, f):
  116.     if h[:8] == '\x89PNG\r\n\x1a\n':
  117.         return 'png'
  118.     
  119.  
  120. tests.append(test_png)
  121.  
  122. def test():
  123.     import sys as sys
  124.     recursive = 0
  125.     if sys.argv[1:] and sys.argv[1] == '-r':
  126.         del sys.argv[1:2]
  127.         recursive = 1
  128.     
  129.     
  130.     try:
  131.         if sys.argv[1:]:
  132.             testall(sys.argv[1:], recursive, 1)
  133.         else:
  134.             testall([
  135.                 '.'], recursive, 1)
  136.     except KeyboardInterrupt:
  137.         sys.stderr.write('\n[Interrupted]\n')
  138.         sys.exit(1)
  139.  
  140.  
  141.  
  142. def testall(list, recursive, toplevel):
  143.     import sys
  144.     import os as os
  145.     for filename in list:
  146.         if os.path.isdir(filename):
  147.             print filename + '/:',
  148.             if recursive or toplevel:
  149.                 print 'recursing down:'
  150.                 import glob as glob
  151.                 names = glob.glob(os.path.join(filename, '*'))
  152.                 testall(names, recursive, 0)
  153.             else:
  154.                 print '*** directory (use -r) ***'
  155.         toplevel
  156.         print filename + ':',
  157.         sys.stdout.flush()
  158.         
  159.         try:
  160.             print what(filename)
  161.         continue
  162.         except IOError:
  163.             print '*** not found ***'
  164.             continue
  165.         
  166.  
  167.     
  168.  
  169.